<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>存储・读取</title>

<para>
<ptitle>KAG 的「栞」</ptitle>
　KAG 中、游戏的存储・读取、是通过（*）「栞（标签）」进行的。( 对无法使用此标记的用户，请修改 MainWindow.tjs )。<r/>
<r/>
　关于书签的说明，也请参考一下 <link href="SaveData"/> 的内容。<r/>
<r/>
　很遗憾的是、KAG 内建的存储・读取功能还无法做到随时存档。而是需要作者自行在剧本档中加入<kw>允许存储标签</kw>、也就是必须要设定存储・读取的「场所」。（译注：KAGeXpress内建了自动存档点，在每次使用[p]指令的时候即自动加入存储标签，因此可以做到一句一存，比较接近随时存档。）<r/>
<r/>
　・・・总之，虽然存储・读取本身、可以通过点击窗口菜单的「存储游戏」「读取游戏」随时进行，但存储的时候，实际上是记录了最近的一个“可存档「场所」”位置。<r/>
　因此、玩家在距离「场所」较远的地方存档的话，读取的时候也只能从「场所」所在的位置开始。<r/>
<r/>
　至于要怎么设定这个所谓的「场所」、其实就是设定一个标签。差别只在于，允许存储标签和普通的标签，书写方式是不一样的。<r/>
<r/>
　请看以下的例子。<r/>
<r/>
<bq>
[wait time=20]<r/>
<b>*start|开始</b><r/>
[cm]<r/>
游戏从这里开始[l][r]<r/>
<r/>
<b>*label2|存储场所2</b><r/>
[cm]<r/>
这里是存储场所２（在这里进行存储的话，读取的时候将从*label2开始的意思）[l][r]<r/>
<r/>
<b>*label3|存储场所3</b><r/>
[cm]<r/>
这里是存储场所３[l][r]<r/>
[jump target=*start]<r/>
</bq>
<r/>
　像这样、在普通的标签后面插入 | ( 竖线符号 ) 的话，竖线之后还可以加入存储场所的名字，类似「<kw>提示语</kw>」这样的东西。各个竖线后面的提示语，重复也没有关系。提示语会在「存取游戏」的菜单内显示、可以方便用户查看档案。此外，如果是自由存档模式（存储的时候开ＷＩＮＤＯＷＳ窗口，要玩家自己指定档案文件名）的话，提示语会作为默认文件名。<r/>
　在使用jump 之类的指令，想要跳跃到带 | 的标签、 | 后面的内容（包括竖线本身）都不要写上。像上面的例子[jump target=*start] 这样、 target 属性里指定标签名的情况、 | 后面的部分是绝对不能加的。<r/>
<r/>
　提示语是可以像下面这样省略不写的。<r/>
<bq>
*label|<r/>
</bq>
　不写的情况下，会继承上一个标签后面带的提示语。<r/>
<r/>
　此外、| 后面加入符号“ &amp;”的话，可以将变数的具体内容作为提示语使用。例如、<r/>
<bq>
*label|&amp;f.title<r/>
</bq>
　像这样、f.title 変数的具体内容将被作为提示语记录。<r/>
<r/>
　标签名 ( | 前面的部分 ) 、在同一剧本档中、是不能有重名的 ( 不同的剧本档中标签名重复则没有问题 )。至于提示语则只是类似注释一样的东西，方便剧本档创作者查看，因此重复也没关系。<r/>
　此外、使用了像这样的标签之后，请一定要写上 [cm] 。（译注：其实不写根本没关系的……）<r/>
<note>
　不用[cm] 用 [ct] 也可以。这两个指令的差别在于、ct 会将当前操作的文字层改为表 page 的 message0 层，而 cm 则是清除所有的文字层，但是不会改变当前操作对象。（译注：所谓更改当前操作的文字层，使用current指令也可以做到）<r/>
　为什么一定要这么加上的理由是因为<b>在指定标签以后如果不在 message 层上输出一些东西的话，是不会保存的</b>的缘故。（译注：不要理这些说明就对了……）<r/>
　此外、像这种保存标签是不能加在类似 trans 和 wt 这样的指令之间的、也就是说，在「执行某项需要时间的操作」和「等待执行完毕」中间这种“不安定状态”是不能进行保存标签设定的。
</note>
<r/>
　此外、不加入| 的话、就只是普通标签，在保存的时候不会派上用场。<r/>
<r/>
　・・・总之需要注意的事情就是这些啦<tt>(^^)</tt><r/>
<r/>
　像这样、在剧本里不断加入这样的标签，玩家可以进行存储的地点也就多了。标签并不会影响游戏流程，只是加入标签，不进行跳跃之类的操作也没关系。<r/>
　只是、存储用的标签后请一定写上 [cm] 之类的代表文字的标记，切记（译注：我已经懒得吐槽了，凸）。<r/>
<note>
　内部的机制就是、KAG 在执行到附加有 |  ( 可存储的 ) 标签的时候、会把当时的状态保存起来。玩家选择进行存储的时候，就是记录了当时的状态。
</note>
</para>

<para>
<ptitle>disablestore TAG的用法</ptitle>
　<kw>disablestore</kw> TAG可以让「保存书签」的功能暂时无效。<r/>
　游戏正式开始前、标题画面之类的地方，通常是无法保存的。<r/>
　而KAG 从启动开始到通过可存储标签之前，「保存书签」的功能都是无效的。<r/>
　但即使在正式开始游戏前的部分不加入存储标签，有可能会出现例外，例如游戏结束的时候又返回标题，通过存储标签的情况。<r/>
　为了避免标题画面之类的地方可以存储、除了不加入存储标签以外，、想要禁止存储的部分请加入 <tt>[disablestore]</tt> ，使「保存书签」功能无效。<r/>
　从执行<tt>[disablestore]</tt>的地方开始 、和KAG启动时的情况相同，在遇到可存储标签之前，窗口菜单上的「保存书签」都将维持不可用状态。<r/>
</para>

<para>
<ptitle>startanchor TAG的用法</ptitle>
　<kw>startanchor</kw> TAG使用后，窗口菜单上的「返回最初」选项将会有效。<r/>
　KAG 的菜单上有「系统|返回最初...」的选项。<r/>
　假如不进行任何操作的话，这个选项是一直无效的。<r/>
　要预先指定玩家点下「返回最初」选项之后跳回的地方的话、就用<tt>[startanchor]</tt> TAG标记那个地方。这个TAG请放在可存储标签的后面（译注：其实不用，这东西本身就是个临时存储标签）。在执行了 <tt>[startanchor]</tt> 之后、「返回最初」的选项将可用。<r/>
　此外、想要让「返回最初」功能在某些地方不可用的话， 在加入<tt>[startanchor enabled=false]</tt>就可以了。在这种情况下、再次执行到 <tt>[startanchor]</tt> 指令之前，「返回最初」功能将不可用。<r/>
<r/>
　「返回最初」是返回 startanchor TAG所在位置的状态记录，和可存储标签类似、返回最初的时候不会对系统变数（全局变量） <comlink href="Var"/> 进行改变。<r/>
</para>

<para>
<ptitle>标签名的重复与省略</ptitle>
　在同一剧本档里出现重复标签名的话 ( | 之前的部分 ) 、第一个标签名维持原样、接着的几个将自动附加 <tt>:2</tt> 或 <tt>:3</tt> 之类的编号。<r/>
　例如、<r/>
<r/>
<bq>
<b>*start|开始</b><r/>
<b>*start|存储点2</b><r/>
<b>*start|存储点3</b><r/>
</bq>
<r/>
像这样的话、第一个 *start 是 "<tt>*start</tt>" 、想跳跃到第二个 *start 标签的情况下、target属性之类的地方要写成 "<tt>*start:2</tt>" 。第三个当然就是 "<tt>*start:3</tt>" 啦。<r/>
<r/>
　此外、省略标签名的话、视为名字和上一个标签名相同、也自动加入编号。
　例如、<r/>
<r/>
<bq>
<b>*start|开始</b><r/>
<b>*|存储点2</b><r/>
<b>*|存储点3</b><r/>
</bq>
<r/>
　像这样、第二个标签会被当作 "<tt>*start:2</tt>" 。第三个则是 "<tt>*start:3</tt>" 。<r/>
<r/>
　标签和提示语都省略的话，就是以下的情况。<r/>
<r/>
<bq>
<b>*start|开始</b><r/>
<b>*|</b><r/>
<b>*|</b><r/>
</bq>
<r/>
　这种书写方式在懒得为每个标签指定名称的时候是相当方便的，但是标签是有内部编号管理的，假如在编辑剧本档的时候，增加或者减少了这种标签，旧存档的存储位置改变、return 的时候找不到返回位置的情况也是可能的。（译注：出错的时候把savedata删除重来就行了。）<r/>
<r/>
<note>
省略提示语的话、就继承执行时上一个通过的标签的提示语、省略标签名的话、继承的是同一剧本档中在该标签之前、并离得最进的标签名，和执行时实际通过顺序无关。<r/>
</note>

</para>

</doc>